package cn.tedu.collection;

import java.util.HashSet;

/**本类用于测试Set存放自定义引用类型对象的去重问题*/
public class TestSet2 {
    public static void main(String[] args) {
        //1.创建Set集合对象
        HashSet<Student> set = new HashSet<>();
        //2.创建Student类的对象
        Student s1 = new Student("张三",3);
        Student s2 = new Student("李四",4);
        Student s3 = new Student("王五",5);
        Student s4 = new Student("王五",5);
        //未添加重写的equals和hashcode方法之前，不会去重，因为地址值不同
        //3.将创建好的学生对象存入set集合中
        set.add(s1);
        set.add(s2);
        set.add(s3);
        set.add(s4);
        /**如果set集合中存放的是我们自定义的类型
         * 那么需要给自定义类中添加重写的equals()和hashCode()，才会实现去重的效果
         * 不然，set集合会认为s3和s4的地址值不同，是两个不同的对象，不会去重*/
        System.out.println(set);

        HashSet<Dog> setdog = new HashSet<>();
        Dog d1 = new Dog("小白狗", 3, 33.3);
        Dog d2 = new Dog("小白狗", 3, 33.3);
        Dog d3 = new Dog("小黑狗", 6, 66.6);

        setdog.add(d1);
        setdog.add(d2);
        setdog.add(d3);

        System.out.println(setdog);


    }


}
